package mianshi.collection;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

public class ListDemo {

    public static void main(String[] args) {
        // 动态数组，连续内存分配；
        // 插入和删除效率低，但查找效率高；
        // 扩容0.5倍
        List<String> arrayList = new ArrayList<>();
        arrayList.add("1");

        // 默认容量大小是0，读写线程安全。
        // 写的时候用ReentrantLock#lock，并且会新创建len+1的数组，将原数组copy过来，再将当前新元素放到len+1的下标位置上；
        // 读的时候使用读原数组；
        List<String> copyOnWriteArrayList = new CopyOnWriteArrayList<>();
        copyOnWriteArrayList.add("1");
        copyOnWriteArrayList.get(0);

        // 双向链表，插入和删除效率高，但查找效率低
        List<String> linkedList = new LinkedList<>();
        linkedList.add("1");
    }

}
